#pragma once

#include "./baseCommand.hpp"

namespace qbe::undoRedoT {

class BaseCommandReceiver;

class Command : public BaseCommand {
 public:
  Command();
  virtual ~Command();

  virtual bool Execute();
  virtual bool Unexecute();

  void SetReceiver(BaseCommandReceiver* _receiver, bool _auto_delete_reveiver = true);

 private:
  Command(const Command& rhs);
  Command& operator=(const Command& rhs);

 protected:
  BaseCommandReceiver* receiver = nullptr;
  bool auto_delete_receiver;
};

}  // namespace qbe::undoRedoT